Improve tsusers/tsadmins group support #2815
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #2806
The first couple of commits in this PR use getgrouplist (if available) to check whether a user is in a group in
g_check_user_in_group()
.This approach is more likely to succeed where a directory service is being used for the following reasons:-
Although very widely available,
getgrouplist()
isn't defined by POSIX. Ifgetgrouplist()
is not detected, os_calls falls back to using the existing code.g_check_user_in_group()
now returns success if the passed-in group is the primary group of the user. That allows us to remove a couple of other checks in sesman (3rd commit).The 4th commit reworks the group checking in sesman/sesexec, to allow primarily for much better logging. This is intended primarily for the devel branch. Commits 1-3 can be easily back-ported to V0.9 if required.